import logging

import requests

from api.open_account_api import OpenAccountApi
from api.reg_login_api import RegLoginApi
from common.utils import common_assert, html_util


class TestOpenAccount(object):

    def setup(self):
        # 创建session对象
        ses = requests.session()
        # 实例化封装接口请求的类
        self.open_api = OpenAccountApi(ses)
        self.reg_api = RegLoginApi(ses)

    # 实名认证测试用例
    def test01_realname(self):
        # 实现登录接口
        self.reg_api.user_login('18928450131', 'qqq123')
        # 实现实名认证接口
        resp = self.open_api.realname('张三', 450102199003078798)
        # 断言
        common_assert(resp, '成功', 200)
        # 断言--独有的内容断言
        resp_dict = resp.json()
        assert '450****798' == resp_dict.get('data').get('card_id')
        assert '张**' == resp_dict.get('data').get('realname')

    # 开户测试用例
    def test02_open_account(self):
        # 实现登录接口
        self.reg_api.user_login('18928450131', 'qqq123')
        # 实现开户接口
        resp = self.open_api.open_account()
        # 断言
        common_assert(resp, 'form', 200)

    # 第三方开户测试用例
    def test03_third_open_account(self):
        # 完成开户接口，获取response对象
        self.reg_api.user_login('18928450131', 'qqq123')
        resp = self.open_api.open_account()
        # 调用封装获取第三方接口请求数据的方法，获取第三方开户接口的url
        data_list =html_util(resp)
        url = data_list[0]
        # 调用封装获取第三方接口请求数据的方法，获取第三方开户接口的请求体数据
        form_dict=data_list[1]
        # 调用封装的第三方开户接口的方法，获取第三方开户接口返回的响应结果
        resp1=self.open_api.third_open_account(url,form_dict)
        # 断言
        assert 200 ==resp1.status_code
        assert 'OK' in resp1.text
